========================================================================== VSVBX - VideoSoft Custom Control Library ========================================================================== Vendor Information VideoSoft 2625 Alcatraz Avenue, Suite 271 Berkeley, California 94705 Phone (510) 547-7295 FAX (510) 547-1084 Compuserve: 71552,3052 Internet: 71552,3052@compuserve.com Distributor Information Compuserve at the CIS prompt type "go swreg" Product ID 1084 Public Software Library 1-800-242-4775 FAX 1-713-524-6398 Product ID 10941 American Express/MC/VISA/Discover ========================================================================== Version History Digit changes indicate new versions. New versions reflect major changes in functionality; they typically require upgrades and new developer's license files (.DEV). Letter changes indicate maintenance releases with minor bug fixes or subtle improvements. Recent versions are listed before older ones. ========================================================================== ---------------------------- 4.0 Feb 1994 ---------------------------- NEW LOOK FOR THE INDEXTAB The new style looks like the tabs used in Word for Windows and Excel. With the new look, adjacent tabs no longer overlap, so we added optional "dog-ears" to allow for tab scrolling with the mouse. The new IndexTab also allows hot keys to be used with vertical text (when the Position property is set to Left, Right, or Right Face In). DESIGN-TIME AUTO-SWITCHING FOR THE INDEXTAB The IndexTab now switches child containers at design time. This makes form design much easier. When AutoSwitch is True, double-click on any tab with the RIGHT mouse button to bring up the appropriate child container, just like at runtime. Then you can easily lay out each container. To see all containers, double-click on the blank space next to the last tab or on the current tab itself. All containers will appear side-by-side, arranged according to their tab sequence. To change the tab sequnce, just drag the controls around. If you don't want to use this new feature, set AutoSwitch to False. FOCUS TRACKING FOR THE INDEXTAB The IndexTab now tracks mouse movements. When you push the mouse button, it starts tracking the mouse. As you drag, the current tab follows the mouse, but you don't get a click event or container switch until you release the mouse button. You can find which tab you the are moving the mouse over by trapping the MouseMove event and reading the CurrTab property. This is useful if you wish to display context-sensitive help for each tab. BOLDCURRENT PROPERTY FOR THE INDEXTAB When this property is set to TRUE, the IndexTab shows the current tab's caption using a bold font. BORDER PROPERTY FOR THE INDEXTAB This property determines the width of the border around the containers inside the IndexTab. This border is in addition to the bevel automatically provided when one of the 3D styles is used. DOGEARS PROPERTY FOR THE INDEXTAB This property determines whether the IndexTab should display "dog-ears" at the start and end of a tab row to indicate the user can scroll the tabs. If this property is set to TRUE, the dog-ears appear automatically when the tabs spill off the page and you can use the mouse to scroll the tabs. TABPICTURE, TABCOLOR, TABENABLED PROPERTIES FOR THE INDEXTAB These new property arrays allow you to attach a picture (bitmap or icon) to each tab, to control the color of individual tabs, and to enable and disable specific tabs so they cannot be selected with the mouse or keyboard. STYLE PROPERTY FOR THE ELASTIC This new property makes the Elastic look similar to the standard frame control, but retaining its resizing and 3D capabilities. The "Style" property has three settings: 0 - Default: this is the original Elastic Style. 1 - Frame Top: this looks like the standard frame. 2 - Frame Bottom: this looks like the standard frame but with the caption below the Elastc instead of across the top. TAGPOSITION PROPERTY FOR THE ELASTIC This new property allows the TagLabels to be placed either to the left or above each tagged control. In previous versions, the TagLabels always appeared to the left of the tagged controls. Label sizes are stil determined by the TagWidth property. NEW SETTINGS FOR THE ELASTIC'S BEVELINNER AND BEVELOUTER PROPERTIES In addition to the Inset and Raised settings, the Elastic now has "5 - Fillet", "6 - Groove", and "7 - Shadow" 3D effects. Obs: The Shadow effect is available for inner bevels only. SHADOWCOLOR PROPERTY FOR THE ELASTIC The "ShadowColor" property allows you to define the color for the shadow created when the "BevelInner" property is set to "7 - Shadow". TABCAPTION BUG IN THE INDEXTAB The index tab would not change the last tab caption properly if the old last tab caption was an empty string. This was fixed. QUOTE BUG IN THE AWK The Awk did not handle embedded quotes correctly. Now it does: Only quotes that appear in the beginning of a field are seen as quotes. Embedded quotes are seen as regular characters. FILTERQUOTES PROPERTY FOR THE AWK The "FilterQuotes" property forces the Awk to remove leading and trailing quotes from fields when "MatchQuotes" is set to True. For example, VSAwk1 = "Name 'John McAdam' Age 23" VSAwk1.MatchQuotes = True VSAwk1.FilterQuotes = False ? VSAwk1.F(2) 'John McAdam' VSAwk1.FilterQuotes = True ? VSAwk1.F(2) John McAdam VAL PROPERTY FOR THE AWK This new property gives the Awk a powerful function evaluator. Set the Caption property to a mathematical expression and the "Val" property returns its value. For example, VSAwk1 = "(1+2)*3^2" ? VSAwk1.Val 27 The following operators are supported, according to their priority: Prty Op Description Op Description ---- -- --------------- -- --------------- 6: () subexpressions 5: ^ raise to power 4: * times / divide % modulus \ divide and truncate 3: + plus - minus 2: > greater >= greater or equal < less <= less or equal = equal <> not equal 1: & and | or The following built-in functions are supported (they are case-insensitive): abs, sin, cos, tan, atn, log, exp The Awk evaluator also supports variables. When the expression parser finds a token it cannot interpret, if fires the new Awk event "Variable". This event has three parameters: Variable - Name of the variable that needs to be evaluated Value - Value of the variable Accept - Flag that indicates the variable is valid Your event handler will typically read the variable name from the "Variable" parameter, supply its value through the "Value" parameter, and set the "Accept" flag to indicate the variable is valid. If the variable name is not valid, return without setting the"accept" parameter and Awk will generate a "Bad Token" error. For example, if your program defines variables "x" and "y", your event handler might look like this: Sub VSAwk1_Variable (Variable$, Value!, Accept%) Accept% = True Select Case Variable$ Case "X", "x" Value! = GlobalX! Case "Y", "y" Value! = GlobalY! Case Else Accept% = False ' unrecognized variable End Select End Sub *Obs: To keep the code fast and compact, reentrant calls are not allowed. This means you may not use the "Val" property while handling the "Variable" event. If an error occurs while evaluating an expression, the "Error" property is set to one of the codes listed below. *Always* check the "Error" property after using "Val". 6 - Syntax 7 - Bad Token 8 - Unbalanced Brackets 9 - Division by Zero 10 - Not Reentrant (see *Obs. above) ---------------------------- 3.0d Nov 1993 ---------------------------- VSVBX LOOKS HARDER FOR LICENSE AND HELP FILES Previous versions looked for the license file in the directory where the VBX was loaded from, and showed the about box if the license file was not found or if the license file was invalid. The new version still looks for license and help files in the directory where the VBX was loaded from. If it doesn't find the files there, it looks in the Windows\System directory and then in the Windows diretory. If it can't find the license file anywhere, it shows the about box. If it finds an invalid license file (e.g., older version), it informs the user. NICER-LOOKING MOUSE POINTERS FOR SPLITTER BARS We finally gave in and made custom mouse pointers for resizing windows with splitter bars. The new pointers look like the ones in the Windows file manager. INDEXTAB ALIGN PROPERTY BUG FIXED When the IndexTab's Align property was set to anything other than "0 - None", VB sometimes complained of errors while loading the form, and created a log file saying that the Width property could not be set. We have never seen this documented anywhere, but apparently the standard Align property must be declared AFTER the standard Left and Width properties. Note that this has to do with the way the VBX itself is written, not with VB programs. We moved the Align property to the proper position (after Left and Width) and the problem disappeared. Unfortunately, this may cause problems when loading projects created with previous versions of VSVBX that 1 - Had IndexTab controls with the Align property set to Align Top or Align Bottom AND 2 - Were saved in binary format or compiled as EXEs. The solution to this is as follows: 1 - Load the old project with the old VBX (3.0c or older). 2 - Save the project in text format. 3 - Quit VB. 4 - Load the new VBX (3.0d or newer). 5 - Restart VB and reload the project. 6 - Save or compile as you wish. We realize this may cause problems to some of our users and wish we could have fixed this problem without affecting older projects, but it really was not possible. PROPORTIONAL SPACING BUG IN THE ELASTIC ** Fixed in 3.0d: Set the Elastic's AutoSizeChildren property to '7 - Proportional', then to '0 - None'. Move the child controls around the Elastic. Set AutoSizeChildren back to Proportional. The controls return to their original position. This has been fixed in 3.0d. ---------------------------- 3.0c Oct 1993 ---------------------------- NEW SETTING FOR INDEXTAB POSITION Due to popular demand, we added the Right Face In tab position. This is the same as the original Right position but with text facing into the form instead of out. INDEXTAB DID NOT FIRE THE CLICK EVENT ** Fixed in 3.0c: The IndexTab did not fire the Click event if you set the CurrTab property to the same value it already had. ELASTIC RESIZING WHEN BORDERWIDTH AND CHILDSPACING = 0 ** Fixed in 3.0c: Sometimes the Elastic failed to resize itself when the BorderWidth and ChildSpacing properties were set to zero. ---------------------------- 3.0b Oct 1993 ---------------------------- ELASTIC RESIZING IN MDI FORMS ** Fixed in 3.0b: The Elastic did not get along with MDI forms. Now it does. BETTER LOOKING 3D FOR THE INDEXTAB The new 3D appearance follows Microsoft's new standard style for IndexTabs. ---------------------------- 3.0a Oct 1993 ---------------------------- INDEXTAB REPAINTING WAS OVER-OPTIMIZED ** Fixed in 3.0a: The IndexTab sometimes skipped a few steps when repainting the screen. This was done to improve speed, but it worked only 99% of the time, and sometimes left parts of the window blank. UNLOADING FORMS DURING INDEXTAB CLICK EVENT ** Fixed in 3.0a: Unloading a form during an IndexTab Click event procedure sometimes caused a GPF. ========================== VERSION 3.0 Sep 1993 ========================== GENERAL IMPROVEMENTS Faster loading forms, smaller VBX, new manual, 20+ new features. INDEXTAB IMPROVEMENTS ** New Properties and Settings: BackSheets, TabCaption, TabsPerPage, TabOutLineColor, Chamfered Style ** Other improvements: Enhanced 3D look, smoother tab scrolling, faster flicker-free redraws, set tab order based on position rather than ZOrder, automatic TrueType font conversion for side tabs. ELASTIC IMPROVEMENTS ** New Properties and Settings: AccessKey, BevelChildren, MaxChildSize, MinChildSize, WordWrap. AutoSizeChildren has three new settings: 'Elastics Horizontally', 'Elastics Vertically', and 'Proportional'. AWK IMPROVEMENTS ** New Properties and Settings: Match Quotes, PosAt, FileMode. The FS property has improved features, and the maximum line length was increased from 255 bytes to 64k. ------------------- 2.2c Jul 1993 ------------------- MISSING PROPERTIES ADDED TO ELASTIC AND INDEXTAB The properties are Hwnd and ContextID. We also added a ShowFocusRect property to the IndexTab. UNEVEN SPACING SCRAMBLING CHILDREN ** Fixed in 2.2c: Shrinking and growing an Elastic with AutoSizeChildren set to Uneven sometimes changed to order of the child controls. ------------------- 2.2a Jul 1993 ------------------- ELASTIC HANDLING GRAPHICAL CONTROLS Reduced flicker and improved speed when stretching graphical controls (Image, Shape, and Label controls). MULTIPLE ACCESS KEYS IN TABS Each tab can have its own access (alt, &) key. ========================== VERSION 2.2 May 1993 ==========================